Star Fighter 3000 release 3.21
==============================

N.B. This text is best viewed at a display width of 77 columns.


About
-----

  The supplied !Star3000 application is a complete release of the latest
version of the game, including all of the program code and level data.
However, it relies on certain OS modules which it will try to load from
your !System directory if they are not already in memory.

  The file 'LinkMe' contains the game object code in linkable AOF format to
comply with the terms of the GNU Lesser General Public Licence (under which
CBLibrary is distributed).


Machine requirements
--------------------

Version 3.21 of Star Fighter 3000 requires a computer with RISC OS 3 or
newer (minimum OS 3.1). It is compatible with StrongARM and the Iyonix PC.
At least 4Mb of RAM is recommended; the game may work on a 2Mb machine but
memory is likely to be very tight.

An ARM 3 or better processor is recommended to use the higher detail levels.
A fast ARM 7 machine is generally sufficient to play the game in full-screen
mode at 'max' detail and 'medium' speed. For desktop play a StrongARM is
recommended.

The 'nested' Window Manager (i.e. version 3.8 or later) is required for the
game's desktop interface. This is available as an upgrade for RISC OS 3
machines but only as part of Acorn's Universal !Boot:
http://www.riscos.com/ftp_space/generic/uniboot/

On older machines the game may also need to load various modules from your
!System directory, including the Acorn Toolbox:
http://www.riscos.com/ftp_space/generic/toolbox/


List of changes
---------------

Changes between version 1.00 and 1.01

- Lost in the mists of time.

Changes between version 1.00 and 2.00

- Compatible with RISC OS 4 and StrongARM processor.

- Proper error handling has now been incorporated into both the main code
  and the two support modules.

- The teletype introductory text has been updated to reflect the new release
  number and publisher. The release 2 team are included in the credits.

- All animation/update timing has been fixed to be mode-frequency
  independent.

- An extended range of detail levels and auto-speed detection is now
  available.

- Improved handling of held mouse buttons and keypresses in the shop and
  mission map.

- The 'view target' cursor now dynamically changes to reflect whether or not
  a remote view is available from different map positions. The exit from the
  remote view is now handled properly.

- A new cross cursor now used to highlight location briefings on the map.

- The use of screen buffering in the shop was re-written in an attempt to
  avoid flickering of the credits display.

- Your H.U.D. will no longer target objects which are out of missile range
  of your ship.

- The multicoloured hills (easy mission 35), tree in the ocean (medium
  mission 1) and mis-spelt 'academey' banner (easy mission 1) have been
  corrected.

- Some of the mountain colours have been altered to be more natural than the
  original bright green.

Changes between version 2.00 and 2.01

- New title picture by 'Ramuh'.

- The textual prompts given for key redefinition have been reversed so that
  "Climb" really means down and "Dive" really means up.

- Less load on the callback system, leading to better performance (notably
  music speed) on slow computers.

Changes between version 2.01 and 2.02

- Added support for both analogue and switched joysticks and a new weapon-
  cycle function that is tied to the middle mouse button.

- Various data is now loaded from file rather than pre-assembled into code.
  Now checks the (decompressed) size of data files before loading them, and
  warns if this exceeds the allocated buffer size.

- High scores and configuration are now loaded on start-up and automatically
  saved when updated.

- Support for multiple and/or external directories of level data via
  Star3000Levels$Path.

- Pointer is no longer momentarily black before purple when mission map
  is first displayed, and black in the shop if haven't previously visited
  the map (e.g. bonus on mission start).

- Animated tiles no longer miraculously spring back to life having been
  apparently destroyed by ground hits. Increased number of animations on all
  maps, and resolved inconsistencies in animations data files.

- Now easier to use cheat codes, since specific cheat activation and
  deactivation messages are displayed instead of just "PASSWORD INCORRECT".
  Plays music first time cheat code is entered.

- Sound module SFX_Handler now supports 16-bit sound, SharedSound, stereo
  effects and variable polyphony. Music and sound data are now loaded from
  file rather than pre compiled into module (uses a dynamic area on OS 3.5).
  Restored authentic change in pitch of thruster sound, which had been
  disabled on Risc PC machines because it caused lock-ups.

- Eliminated instances where SFX_Handler SWIs were called with bad values
  (new parameter checking).

- Officially registered the application and module names, SWI chunk and
  error numbers for SFX_Handler module.

- Improvement to keypress / mouse click handling in menus.

Changes between version 2.02 and 2.03

- Fixed longstanding problem where lingering mouse click to exit remote
  target view was counted twice (more often than not showing another
  remote view).

Changes between version 2.03 and 2.04

- Reinstated support for 8-bit sound, which is used as a last resort in
  the absence of both SharedSound and 16-bit sound hardware.

- Fixed longstanding bug concerning collisions between parachute drops and
  non-player objects (thanks to Ian Hamilton).

- Added 'reverse stereo' option for those who (like me) have their speakers
  the wrong way round.

- Improved algorithms for calculating stereo separation and polyphony
  scaling go some way towards alleviating problems reported with quiet
  16-bit sound output.

- Added joystick button detection to intro code and other 'wait' screens,
  and support for joystick navigation of the main menus and mission screens.

- Downgraded 'medium' speed from 33fps to 25fps, since 33fps appeared too
  fast on StrongARM machines. 33fps is still available as the 'fast' speed
  setting.

- Fixed longstanding bug where player's engine colours strobed grey/colour
  when thrusting and firing simultaneously.

- Configuration of SFX_Handler module is now done prior to running the
  introduction, hence it is possible to quieten the intro music or disable
  it altogether.

- Removed anomalous data and blank sheets from the music tracks. Some weird
  noises had been revealed when simultaneous fx and music were allowed in
  the previous version of the sound module.

Changes between version 2.04 and 3.00

- The program is now compatible with 32-bit RISC OS and runs natively on the
  Iyonix PC.

- Now runs under the RISC OS Window Manager - you can even play the game in
  a window whilst other applications continue to run in the background.

- Sadly, the TV-style introduction has been scrapped.

- The configurability of the game using the desktop interface is greatly
  extended compared to using the old configure menu; for instance all
  keys and buttons can now be redefined. Many existing options such as
  volume and mouse sensitivity can be set with increased accuracy.

- Friction on steering can no longer reverse direction of a ship, and
  reduction in manoeuvrability at speed should now work correctly with
  negative speeds.

- Mouse control auto-centring is now an option.

- Configuration is no longer saved whenever it is altered; only when the
  user specifically requests it.

- Keyboard input is now fully buffered, which makes the game's interface
  more usable (especially under heavy processing loads in the desktop).

- Stereo sound is no longer 'flat'; it now varies appropriately as the
  camera view looks up or down. Also the accuracy of distance-to-sound
  calculations has been improved when stereo sound is enabled.

- When outputting through the 8 bit sound system, the music player (which
  runs on interrupts) now uses the Scheduler rather than starting notes
  directly. This should eliminate the possibility of interference with DMA
  buffer fills.

- When out of visual range the player no longer misleadingly appears as a
  red cross on the H.U.D.

- Now forces the camera view to the player when he dies. Previously only
  tracking camera view was forced, which could be confusing.

- The device claim protocol is now used to claim and protect the game's
  exclusive use of the sound system (unless SharedSound is detected).

- Aerial mines and parachute drops can no longer pass straight through hills
  and ground objects.

- The shop picture is only rendered from the last camera position if this is
  a valid view point.

- You can no longer do remote target views while the scanner system is down.
  This was formerly an ingenious way of finding targets that were supposed
  to be hidden!

- Overhauled the game manual and converted it into HTML to allow better
  formatting than plain text and the addition of links and illustrations.

- Tightened up the disabling of controls when the game is paused or the
  player dead. For example it is no longer possible to trigger ECMs while
  dead!

- The sound module now refuses to die if our 16-bit linear handler has been
  superseded, in order that any subsequent attempt to restore our handler
  does not fail. Also, we now attempt to restore the previous 16-bit handler
  upon exit.

- Disabled parachute drops on enclosed levels. Previously they had been
  appearing high above the ceiling!

- Fixed 'feature' where the mission timer was suspended while the player's
  ship was critically damaged, rather than actually dead. Also, the timer is
  now stopped after mission completion, which prevents inappropriate 'hurry
  up' messages.

- Countdown to activation of defences is now disabled except during a game
  so it is no longer possible for a 'defences active' alarm to go off during
  the menu war backdrop.

- Menu backdrop war now works properly on enclosed levels because the
  combatants are no longer invariably reincarnated at ceiling height.

- On RISC OS 3.5 and later, mouse flight control now bypasses the kernel and
  talks directly to the mouse driver. This frees it from screen mode
  dependence and the unjustifiable influence of the configured mouse pointer
  speed.

- Fighters can no longer fly through their hangar or parent ship
  indefinitely; collision detection is only disabled during launch.

- Enemy ships will no longer consider switching their attack to the player
  when he is already dead.

- Ground objects and hills no longer appear to float above the horizon when
  the view is close to ground level (sky was being drawn too low).

- Hangars no longer launch ships to attack the player's ship after it has
  been destroyed.

- Harmless bits no longer go bang when they hit objects. Added bang for ship
  collisions with hills or impervious objects. Ships colliding with ground
  objects now bang louder than bits or lasers.

- The shop button on the map screen is now shaded when unavailable. Can no
  longer toggle view or radar buttons when those facilities are unavailable.
  Radar button now emits same beep upon activation as other buttons.

- Big ships no longer crash noisily into any bonus coins in their path.
  Lasers also pass straight through floating bonus coins; I think this makes
  the game much less annoying but it is configurable.

- Added a missile launch whoosh sound effect for S-A-Ms.

- Instead of converging on the dead player, any attacking fighters now
  turn around and scatter. This prevents them smashing into the ground
  and/or each other. Also, fighters looking for a new target no longer
  consider the dead player as a possibility.

- Fighters attacking, flying in formation or evading objects are no longer
  willing to go dangerously close to the ground (or, on enclosed levels, the
  ceiling).

- Cycle-select weapons function for mouse or joystick buttons now allows
  selection of super weapons (if any) as well as the standard 3 weapons.
  Weapons of which supplies are exhausted are now skipped.

- Attempt to improve the obstruction avoidance A.I.: Fighters no longer
  consider climbing above the ceiling on enclosed levels and are now
  willing to go below the asteroids on space levels. Introduced a bias in
  favour of the current direction of evasion to prevent indecisiveness. The
  projected movement vector is checked more thoroughly, and closer
  obstructions now have priority.

- Can now do camera views of enemy fighters launched from hangars or big
  ships; previously only those ships present at mission start could be
  viewed.

- Any displayed mission or location briefing is now restored on exit from
  the shop or a remote target view.

- It is now configurable whether the game uses 4 or 8 channels of sound;
  this should alleviate likely poor interrupt latency with 16 bit sound on
  slow machines.

- Under OS 4 automatic screen cleaning is disabled, and any cached changes
  are forceably flushed to screen before displaying the shadow bank. This
  may slightly improve performance and also eliminates the possibility that
  a half-drawn picture is momentarily displayed.

- Fixed bug introduced in version 2.01 where the map's remote target view
  facility behaved unpredictably, sometimes showing a view in a completely
  senseless direction.

- Fixed bug introduced in version 2.02 where the ECM key would auto-repeat
  (should require once press per ECM blast).

- Fixed bug introduced in version 2.04 where fighters launched from a big
  ship could immediately be smashed by it (especially with rotating space
  stations).

- Fixed longstanding bug where the player's ship would drift inexorably
  sideways at the very start of a mission.

- Fixed longstanding bug that prevented big ships from launching A-T-A
  missiles as was originally intended.

- Fixed longstanding bug where fighters launched from ground hangars would
  immediately climb unsteadily away instead of taxing for take off along
  the runway.

- Fixed longstanding bug where newly added objects fell foul of dangling
  collision references - typically this manifested as missiles blowing up at
  launch.

- Fixed longstanding bug in collision detection between ships and lasers: If
  many ships overlapped at the same latitude (especially if one was big)
  then lasers could pass straight through their target. This was most
  noticeable when attacking a satellite.

- Incoming S-A-Ms are now reported on your H.U.D. (previously only the
  warning siren sounded).

- Fighters no longer continue to attack the bonus coins left behind when
  their target is destroyed, instead of finding a new target or rejoining
  formation.

- When the ship being viewed is destroyed the camera no longer locks on to
  one of the bonus coins left behind, spinning wildly.

- Upon completion of a mission pyramid the menu backdrop war is now
  correctly re-initialised, and the player gets a chance to enter a high
  score (because the score is reset upon starting a new pyramid).

- Fixed longstanding bug where hills became bigger every time a game (or the
  menu backdrop war) was initialised without a new ground map having been
  loaded.

- Cloaked ships are no longer shown on the small map (they never were on the
  main map), since they are supposed to have "a radar footprint the size of
  a small pea".

- Fixed longstanding bugs where ships plotted on the small map flickered
  during scroll, arrow symbols randomly appeared and disappeared next to map
  grid markings, and the zoom X8 map plotter produced visual artifacts.

- The polygon plotter now draws right up to the top of the screen rather
  than leaving a one line gap.

- Attacking ships no longer head for bad coordinates when their target is
  destroyed, there are no potential targets nearby and the player is dead
  (or, in the case of friendly ships, when his formation is full).

- The ceiling texture map renderer now draws the bottom screen line
  correctly when the horizon is below this point.

- On bonus levels, it is no longer the case that the first wave of parachute
  drops reach the ground simultaneously and many simply disappear.

- When the player's ship crashes fatally on a bonus level it is now
  destroyed rather than simply exiting the bonus level shortly afterward.

Changes between version 3.00 and 3.01

- Added workaround for a problem where attempting to enter full screen mode
  on an Iyonix PC resulted in an 'Unknown OS_ScreenMode reason code' error.

- Lack of a screen mode suitable to run the game should now result in a
  'Screen mode not available' error rather than corrupted display in an
  inappropriate screen mode.

Changes between version 3.01 and 3.02

- If internal data files cannot be found during initialisation, the game no
  longer gives misleadingly error reports such as 'Not enough memory' or
  'Insufficient room to load file'.

Changes between version 3.02 and 3.03

- Game is no longer automatically suspended upon losing the input focus
  unless the player is actually in flight (i.e. not when viewing the mission
  map, ship status or other screens).

- Mouse clicks on the game window are now ignored if the SHIFT key is held.
  This is handy for restoring the input focus without side effects.

- Uses Wimp_Extend 11 to read scroll bar sizes (for sub-windows of Choices
  dialogue box) on versions of the Window Manager that support it.

Changes between version 3.03 and 3.04

- Machines running RISC OS 3 or 4 no longer require an updated version of
  the Shared C Library from Castle Technology Ltd and a version of the
  floating point emulator that supports LFM/SFM instructions.

- Removed code to manually reset the standard dialogue boxes upon Cancel
  click. We now rely on the Toolbox to implement this (although so far only
  the Scale module does so).

Changes between version 3.04 and 3.05

- Fixed bug that caused the application to be being paged in as often as
  possible even when configured to run slowly, thus reducing the time
  available to other tasks. There would also have been probable malfunction
  if the application were started after the centisecond timer had wrapped
  around.

- The Choices dialogue box now always opens centred on the screen instead
  of simply being brought to the front if already open.

- Made provision for internationalisation of system variables for Castle's
  proposed help system.

- For consistency pressing F12 will now cause the main window to lose input
  focus whether or not the game is suspended.

- Various file loading problems that were ignored now abort initialisation
  with an error (broken in 3.02 and subsequent versions).

- Fixed longstanding bug where detail map could not be scrolled to eastern
  and northern extremities by clicking on global (small) map. Also fixed
  over-aggressive clipping of target crosses and object dots on map.

- Fixed minor bug where 'Ship status' instead of 'Toggle HUD' was
  erroneously displayed by the Choices dialogue box as the action
  associated with a mouse or joystick button.

- Updated G.A.G.'s ResFind utility (used internally) from version 2.01b to
  2.12.

- Internal changes to use more Toolbox interfaces in preference to directly
  calling the Window Manager, improve division of code between source files
  and take advantage of ObjAsm's provision for literal pools.

- Fixed bug where 'Not enough memory' would be reported on initialisation if
  pointer shapes Sprite file not found.

- Long intervals between game updates are now capped at one second so that
  timer-driven animations do not skip excessively after multitasking has been
  suspended (e.g. due to a Wimp error report).

- If the key definition window is given the input focus unsolicited then the
  previously highlighted icon is now selected. This eliminates problems
  after the input focus is borrowed (e.g. for a transient dialogue box).

- Unclaimed key presses are now reliably passed on to other applications.
  Previously this only happened when the game or key definition window had
  the input focus.

Changes between version 3.05 and 3.06

- Fixed a bug where attempting to enable sound from the Choices dialogue box
  without the SharedSound module loaded caused either a fatal 'branch through
  zero' error or a succession of non-fatal 'SFX error' messages (depending
  on whether sound was enabled upon initialisation).

- Fixed a bug where changing the number of channels whilst sound was enabled
  triggered the device claim protocol, unless SharedSound was loaded. This
  manifested as a spurious error 'Cannot claim use of the sound system'
  followed by several 'SFX error' messages.

- Fixed a bug in the SFX_Handler module where the stack pointer would be
  corrupted (with unpredictable results) if an error were returned by SWI
  OS_ConvertHex8 (which is used by SFX_LoadTrack and SFX_LoadSample).

- Fixed a bug where mouse control over the pointer position was not restored
  upon entering the mission map if the pointer reappeared outside the game
  window.

- The status of the internal speaker is now monitored continuously whilst
  displayed in the Configure menu. This provides more accurate feedback;
  not all machines have an internal speaker or allow software control over
  it. Errors from SWI Sound_Speaker are now suppressed.

- Added a pause of several seconds (which can be skipped by the user) to
  prevent the title screen and version number from vanishing immediately.

- Errors during initialisation are now consistently treated as fatal.

Changes between version 3.06 and 3.07

- Number of lives displayed on mission start should now be accurate
  (broken in 3.00 and subsequent versions).

Changes between version 3.07 and 3.08

- Internal changes to treat graphics coordinates as 16 bit rather than 32
  bit. Should not have user-visible effects.

- Optimised instruction ordering within the SFX_Handler module, which should
  particularly benefit X-Scale processors. Latencies reported by ARMalyser
  have been reduced from 487 (10.3% of estimated total cycles) to 344 (7.5%).

- Improved the quality of music fade out; the amplitude of all channels is
  now scaled simultaneously and proportionally, instead of clipping the
  amplitude of the loudest channels first.

- Improved the accuracy with which note amplitude is specified when sound
  output is via an 8 bit voice generator (uses 7 bit log volume with SWI
  Sound_Control).

- Added a header to the transient utility that is used to ensure that enough
  memory is allocated for the game's double-buffered full screen display.
  This is for compatibility with the latest versions of RISC OS 4.

Changes between version 3.08 and 3.09

- No longer attempts perspective division on coordinates that are behind the
  camera. (Previously multiplied X and Z coordinates by indeterminate values
  read from outside a lookup table.)

- Corrected the speed of glissandos to match early versions of the
  SFX_Handler module (this effect was accidentally reimplemented at half
  speed after the sound player was rewritten to support 16 bit sound).

Changes between version 3.09 and 3.10

- Various internal changes to use tables of data in preference to in-line
  code in the desktop front-end.

- Fixed a bug where the key transition buffer would be flushed whenever a
  task started that had a name partially matching "ShellCLI" from the start
  of both strings (e.g. "S", "Sh", "She", etc.) Instead, this buffer is now
  flushed whenever a mode change message is received (should catch
  termination of *GOS and single-tasking programs as well as '*Commands'
  from the Task Manager's menu).

- If the game has been configured to start up in full screen mode, but that
  isn't possible for any reason (e.g. screen mode not available) then the
  user is now offered the opportunity to continue instead of quitting. This
  allows the game to be reconfigured to prevent a recurrence.

- Fixed an incompatibility with RISC OS 6 which caused "No writable memory
  at this address" to be reported if the game started up in full screen mode.
  The title screen was being decompressed directly into the frame buffer but
  OS_ValidateAddress faults physically mapped dynamic areas (such as that
  used by the VIDC hardware video driver).

Changes between version 3.10 and 3.11

- Fixed a potential memory leak in the case where SWI OS_ReadModeVariable
  returns an error (probably never happened in practice).

- SWI Wimp_SetMode is now used to restore the desktop screen mode and palette
  upon return from full-screen mode, just like when a 'grubby' task exits.
  Previously, the game used custom code which wasn't full compatible with
  RISC OS 6 (window furniture was not always drawn).

- The colour translation table required to redraw the contents of the game
  window is now recalculated 'just in time' instead of whenever the game is
  notified that the desktop screen mode or palette has changed. This is more
  efficient because such notifications typically arrive in tandem.

- The palette for the game's native screen mode is no longer held
  persistently in memory whilst in the desktop environment.

- More robust in the case where SWI ColourTrans_ReadPalette tries to output
  more data than the previously estimated buffer size.

- If an error occurs during redraw of the game window (e.g. not enough memory
  for colour translation table) then the rest of the window will be filled
  with black and the game automatically suspended in fairness to the player.

Changes between version 3.11 and 3.12

- Fixed an obscure bug where the SFX_Handler module would overwrite the first
  instruction of its dynamic area handler with a NOP (instead of zeroing the
  private word) when tidying up after a failed initialisation. If this handler
  was subsequently called then errors such as "Illegal instruction" and
  "Reentrancy in ChangeDynamicArea" would occur.

Changes between version 3.12 and 3.13

- The sky renderer no longer relies upon low-order address bits being ignored
  in unaligned data accesses. (STM to an unaligned address may cause undefined
  behaviour, depending on the ARM architecture variant.)

- The routine which calculates the screen position of planets and stars no
  longer attempts perspective division on coordinates behind the camera.
  (Previously multiplied X and Z coordinates by indeterminate values read from
  outside a lookup table.)

- Fixed a bug introduced in version 3.11 where the action button which can
  be used to insert the current scale into the Choices dialogue box was not
  labelled correctly until the scale had been changed.

- Improved the key names for a UK keyboard that are used in the Choices
  dialogue box.

- Created a new 'Desktop' section of the Choices dialogue box and moved the
  'Suspend when focus lost', 'Start in full-screen mode' and scaling options
  into it.

- Which input device should be used for flight controls is now configured
  using a set of radio buttons instead of separate option buttons in the
  'Mouse' and 'Joystick' sections of the Choices dialogue box.

- The type of joystick (analogue or switched) is now configured using a set of
  radio buttons instead of a pop-up menu.

- There is a new option to show the average frame rate over the last eight
  frames in an external toolbar attached to the main window. A slider shows
  the ratio of the actual frame rate to the maximum allowed.

- Updated the game's pre-veneer for the runtime environment's error handler to
  avert 'No stack for trap handler' errors if an exception occurs within the
  portion of the gamecode that is not APCS compliant. This was necessary to
  accommodate recent changes in RISCOS Ltd's shared C library.

- Various data files are now loaded whilst the title screen is showing during
  initialisation instead of just-in-time when the game receives its first null
  event.

Changes between version 3.13 and 3.14

- Fixed unaligned data accesses in the assembly language routines which
  zero-initialise the table of keys pressed, plot sprites for the mission
  selection screen, and create bonus coins in the game.

- Fixed unaligned data accesses in the compiled C code by specifying the
  required arcane options when invoking the compiler.

- Variables of type 'short int' are even more inefficient with the new
  compiler options, so I have substituted natural-width integers.

Changes between version 3.14 and 3.15

- Added an option to scale the frame buffer from 256 to 480 lines when in
  full-screen mode, for non-letterboxed display on VGA-type monitors.

- More detailed key names are displayed in the Choices dialogue box.

Changes between version 3.15 and 3.16

- Added an invulnerability cheat (a climbing plant).

- Fixed bug introduced in version 3.00 where enemy spacecraft launched from
  hangars or big ships did not swerve to avoid head-on collisions with the
  player.

- Reduced memory usage by 12 bytes per spacecraft.

- Eliminated occasional overflow in calculations for deflection shooting.

- Fixed longstanding bug concerning friendly spacecraft that can't find an
  enemy to attack when the spacecraft they are following joins the player's
  formation and there is no room to join too.

- If the player fires upon a friendly spacecraft that has been configured
  to ignore attacks then it no longer mutinies and leaves the player's
  formation without actually attacking the player.

- Fixed longstanding bug where a big ship could attack a bonus coin for up
  to ten frames if it appeared at the same time that an enemy spacecraft was
  destroyed.

- Fixed loads from illegal addresses 2, 12 and 68.

- Made it configurable whether or not the camera view is reset to the
  player's spacecraft whenever it is hit by incoming fire.

- Attacking spacecraft no longer fire at their target and now have unlimited
  ability to roll when avoiding collisions with ground objects.

- Enabled some historic code to reduce the jitter of roll control by A.I.

- Fixed bugs introduced in version 3.15 where keyboard navigation of the
  in-game menus and key activation of map control icons didn't work when
  upscaling to 480 lines.

- Fixed bug introduced in version 3.15 where garbage was displayed instead
  of the title screen in full-screen mode except when upscaling to 480 lines.

- Fixed an incompatibility with RISC OS 6 which prevented mouse clicks on
  the 'PLAY GAME' button being debounced properly.

- A message is now broadcast to claim ownership of the input focus from
  other desktop applications.

- Replaced the algorithm used by the A.I. to avoid collisions between
  spacecraft and ground objects. In particular, spacecraft no longer turn
  towards obstacles.

Changes between version 3.16 and 3.17

- Fixed bug introduced in version 3.16 where the A.I. never did deflection
  shooting.

Changes between version 3.17 and 3.18

- Restored the original title artwork, which had been used until version
  2.01.

- Removed references to the CD-ROM edition and the former publisher.

Changes between version 3.18 and 3.19

- Fixed a bug introduced in version 3.16 where collisions with a bomb,
  missile, mine, parachute or satellite inflicted no damage on a fighter or
  the player's ship, if hit.

Changes between version 3.19 and 3.20

- Fixed a secondary bug exposed by fixing the no-missile-damage bug in
  version 3.19: collisions between the player's ship and a bomb, missile,
  mine, parachute or satellite always inflicted damage even if the
  invulnerability cheat was active.

Changes between version 3.20 and 3.21

- Fixed a longstanding bug which caused radar dishes to be drawn with the
  wrong orientation on the map.
- Made the decision of whether to draw 3D spinning ground objects on the map
  (the original behaviour, disabled years ago) into a configuration option.
- Implemented horizontal as well as vertical frame scaling to allow use of
  a standard VGA screen mode or double the original resolution (640x512).
- Updated web links in the manual.


A9Home users
------------

  At the time of writing, A9Home machines do not have the OS modules
'SoundDMA', 'SoundChannels' and 'SoundScheduler'. However one could play
earlier versions of Star Fighter 3000 on these machines by disregarding a
series of 'SWI not known' errors on initialisation. Ironically this was only
possible if sound was ON in the game's saved configuration, because errors
after use of the device claim protocol were erroneously treated as non-fatal.

  Version 3.07 of the game (and later) will start up successfully without
these modules, but only if the game's sound is configured OFF (the opposite
of the former illogical behaviour). A configuration file that prevents the
game attempting to enable sound output is supplied in directory 'NoSound'.
The accompanying Obey file 'RunMe' will copy it to the location for choices
on your system, or inside the !Star3000 application if none.


Contact details
---------------

For further information or to report a bug or other problem, feel free to
contact me.

Christopher Bazley
Star Fighter 3000 maintainer
30th October 2020

Email: mailto:cs99cjb@gmail.com

WWW:   http://starfighter.acornarcade.com
